"use strict";
// 声明一个接口 用来限制输入值的类型
// interface Person {
//     firstName: string;
//     lastName: string;
// }
//
// // 限制这个函数输入值的类型 必须是 Person接口中定义的类型
// function greeter(person: Person) {
//     return "Hello, " + person.firstName + " " + person.lastName;
// }
//
//
// class Student {
//     fullName: string;
//
//     constructor(public firstName: string, public middleInitial: string, public lastName: string) {
//         this.fullName = firstName + " " + middleInitial + " " + lastName;
//     }
// }
//
// let user = new Student("Jane", "M.", "User");
//
// greeter(user);
//
// // 限制输入值的类型
// interface UserInterface {
//     currentPage: number,
//     pageSize: number,
//     username?: string
// }
//
// // 写一个方法，需要传入一个 当前页 每页的条数 搜索条件等进行查询
// class Users {
//     constructor(public currentPage: number, public pageSize: number, public username: string) {
//         this.currentPage = currentPage;
//         this.pageSize = pageSize;
//         this.username = username;
//     }
// }
//exports.__esModule = true;
// 请求的方法
// enum Method {
//     GET = 'GET',
//     POST = 'POST',
//     PUT = 'PUT',
//     DELETE = 'DELETE',
//     OPTIONS = 'OPTIONS'
// }
// 这个泛型是传入的值的类型
// function $http(url: string, method: Method, data?: any) {
//     return axios({
//         method: method,
//         baseURL: 'http://localhost:8989',
//         url: url,
//         data
//     });
// }
//
// $http('user/admin', Method.POST);
// 函数类型的接口：对方法传入的参数 以及返回值进行约束
// 加密的函数类型接口
// interface encrypt {
//     (key: string, value: string): string
// }
//
// let md5: encrypt = function (key: string, value: string): string {
//     // 模拟 操作
//     return key + value
// }
//
// md5("clientServe", "serveClient")
// 可索引接口  数组、对象的约束  不常用
// 可索引接口  对数组的约束
// interface UserArr {
//     // 索引值       返回值
//     [index: number]: string
// }
//
// let arr: UserArr = ['a', 'b']
//
//
// // 可索引接口 对对象的约束  了解
// interface UserObject {
//     // 索引是一个字符串  返回值
//     [index: string]: string
// }
//
// let arrObject: UserObject = {names: 'kun'}
// 类类型接口
// interface Animal {
//     name: string
//
//     eat(str: string): void
// }
//
// class Cat implements Animal {
//     name: string
//
//     constructor(name: string) {
//         this.name = name
//     }
//
//     eat(str: string): void {
//         console.log("这个" + str)
//     }
// }
//
// let cat = new Cat('admin')
// 接口的扩展
// interface Animal {
//
//     eat(): void
// }
//
// interface Personss extends Animal {
//     work(): void
// }
//
//
// class Web  implements  Personss{
//
//     private  name:string
//
//     constructor(name:string) {
//         this.name=name
//     }
//
//     eat(): void {
//         console.log("eat")
//     }
//
//     work(): void {
//         console.log("work")
//     }
//
// }
// 泛型就是解决 类  接口 方法 的复用性，以及不特定数据类型的支持
//
// function getData1(value: string): string {
//
//     return "string"
// }
//
// function getData2(value: string): number {
//
//     return 123
// }
//
// function getData3<T>(data: T): T {
//     return data;
// }
// 泛型类
var Result = /** @class */ (function () {
    function Result() {
    }
    Result.success = function (data) {
        var result = new Result();
        result.code = 200;
        result.message = "处理成功";
        result.data = data;
        return result;
    };
    return Result;
}());
function getUserList() {
    var numbers = Array.of(1, 2, 3);
    return Result.success(numbers);
}
console.log(getUserList());
